1. Field of the Invention
The invention relates generally to Serial Attached SCSI (SAS) storage systems and more specifically relates to methods and structure to improve performance of a SAS storage system by controllably propagating and not propagating BROADCAST(CHANGE) SAS primitives responsive to changes in the SAS domain.
2. Discussion of Related Art
Storage systems comprise a number of control components coupled with a number of storage devices. In a SAS environment, a storage system may comprise one or more SAS initiators (e.g., storage controllers) coupled through a SAS fabric with a plurality of SAS targets (e.g., storage devices). The SAS fabric may comprise any number of SAS expanders (switching devices that allow any of the storage controllers to couple with any of the storage devices).
In a SAS storage system, a SAS initiator performs a SAS discovery process to determine the present configuration of the system (e.g., to discover the topology of the SAS domain by identifying all devices of the domain and the paths interconnecting the various devices). The current configuration so determined is distributed to other components of the SAS domain for purposes of determining routing of I/O requests through the fabric between a SAS initiator and a SAS target.
In accordance with the SAS standards, when a component (i.e., a SAS expander or a SAS initiator) detects a change in the current configuration of the SAS domain (e.g., a change in the components directly coupled to the initiator or expander), the component generates and transmits a SAS BROADCAST(CHANGE) primitive to other components coupled with it. The BROADCAST(CHANGE) primitive eventually will propagate up to an initiator component of the SAS domain which will, in turn, initiate a SAS Discovery process (i.e., by operation of a management client process) to determine the new configuration of components of the domain. By performing the SAS Discovery process, the initiator determines the new SAS domain configuration and, in effect, distributes the updated configuration information to other components of the SAS domain (i.e., to other initiators and expanders of the domain). For example, routing tables in the SAS expanders may be updated in response to the SAS Discovery process to reflect the presence or absence of some target device and/or the addition/removal of a communication path between some devices of the domain.
The propagation of such BROADCAST(CHANGE) primitives and the associated SAS Discovery processing to update information in components of the SAS domain can consume significant processing in the SAS domain. Most importantly, performing a SAS Discovery process may delay processing of I/O requests in the domain until the Discovery process is completed.
Thus it is an ongoing challenge to reduce the overhead processing and communication bandwidth utilization in response to detected changes in the configuration of a SAS domain.